<?php

// Подключаем библиотеки
require_once('lib.php');
include_once("form.php");

// ----------------------------------------Интеграция с Moodle---------------------------------------
global $DB, $USER;

$url = $DOF->url_im('guestbook', '/index.php', array());
//$userid = $DB->get_record('block_dof_s_persons', array('mdluser' => $USER->id), 'id');
//$DOF->im('guestbook')->require_access('view', 0, $userid->id);

/*
$record = new object();
$record->personid = '3';
$record->baseptype = 'im';
$record->basepcode = 'guestbook';
$record->aclwarrantid = '2';
$record->departmentid = '1';
$record->baseid = '0';
$record->datecreate = strtotime("now");
$record->begindate = strtotime("now");
$record->duration = date(100000000);
$record->noextend = 0;
$record->status = 'active';
*/
//$id = $DOF->storage('aclwarrantagents')->add($record);
//$id = $DOF->storage('persons')->reg_moodleuser($USER);

// ----------------------------------------Интеграция с Moodle---------------------------------------

// если $_GET['section'] == admin -> переходим в админку
// еще если $_GET['section'] == msg -> переходим к просмотру отдельного сообщения,
// в противном случае загружаем лист сообщений
$section = optional_param('section', null, PARAM_TEXT);

if (isset($section) AND $section == 'admin')
{
    // получаем id пользователя
    //$personid = $DB->get_record('block_dof_s_persons', array('mdluser' => $USER->id), 'id');
    
    // -------------------------Проверка доступа в админку--------------------------
    if ($DOF->im('guestbook')->is_access('view', 0))
    {
        // получаем список собщений
        $arrResult['MSG_LIST'] = $DOF->storage('guestbook')->get_message_list();
        
        // создаем форму панели администратора
        $modpanel = new dof_im_guestbook_moderpanel_form($url."?section=admin", $arrResult, 'post', null, array('class'=>'moder', 'name' => 'moder'));
        
        if ($modpanel->is_cancelled())
        {
            echo $DOF->get_string('form_canceled', 'guestbook');
        }
        
        // массив возможных параметов формы
        $params = array('gettxt' => optional_param('gettxt',   null, PARAM_TEXT),
                'aplmsg' => optional_param('aplmsg',    null, PARAM_TEXT),
                'delmsg' => optional_param('delmsg',    null, PARAM_TEXT),
                'delcom' => optional_param('delcom',    null, PARAM_TEXT),
                'mlist' => optional_param('mlist',      null, PARAM_TEXT),
                'mtext' => optional_param('mtext',      null, PARAM_TEXT),
                'comlist' => optional_param('comlist',  null, PARAM_TEXT)
        );
        
        // если в форму введены корректные значения, разрешить манипуляцию с данными
        if ($modpanel->process()) 
        {
            if (isset($params['aplmsg']))
            {
                $arrParam = array("msgid" => $params['mlist'], "msgtext" => $params['mtext']);
                $flag = $DOF->storage('guestbook')->update_message($arrParam);
                $action = "apply";
            }
            else if (isset($params['delmsg']))
            {
                $flag = $DOF->storage('guestbook')->delete_message($params['mlist']);
                $action = "delmsg";
            }
            else if (isset($params['delcom']))
            {
                $arrParam = array ("cmtid" => $params['comlist'], "msgid" => $params['mlist']);
                $flag = $DOF->storage('guestbook')->delete_comment($arrParam);
                $action = "delcom";
            }
            
            // если одно из вышеперечисленных действий - редирект
            if (isset($action))
            {
                // очищаем массив параметров
                clean_param_array(array('aplmsg', 'delmsg', 'delcom'), PARAM_TEXT);
                $adminurl = $DOF->url_im('guestbook', '/index.php', array('section' => 'admin'));
                header("Location: $adminurl");
            }
        }
        
        // ----------------------Подключение шаблона----------------------------
        //печать шапки страницы
        $DOF->modlib('nvg')->print_header(NVG_MODE_PORTAL);
        $modpanel->display();
        // ----------------------Подключение шаблона----------------------------
    }
    else
    {
        echo $DOF->get_string('noadminaccess', 'guestbook');
    }
}
else if (isset($section) && $section == 'msg')
{
    // массив возможных параметов формы
    $params = array('addcom' => optional_param('addcom',  null, PARAM_TEXT),
            'cmtauthor' => optional_param('cmtauthor',    null, PARAM_TEXT),
            'cmttext' => optional_param('cmttext',        null, PARAM_TEXT),
            'id' => optional_param('id',                  null, PARAM_TEXT)
    );
    
    $arrResult = array();
    $companel = new dof_im_guestbook_addcom_form($url."?section=msg&id=".$params['id'], array(), 'post', null, array('class'=>'addcomment', 'name' => 'addcomment'));
    
    if ($companel->is_cancelled())
    {
        echo $DOF->get_string('form_canceled', 'guestbook');
    }
    
    // обрабатываем возможность добавления комментария
    if (isset($params['addcom']))
    {
        // если существуют имя автора и текст комментария, можем добавлять в базу
        if ($companel->process())
        {
            $arrParam = array ("msgid" => $params['id'], "text" => $params['cmttext'], "author" => $params['cmtauthor']);

            if ($DOF->storage('guestbook')->add_comment_to_message($arrParam))
            {
                $addcmt = true;
                $msgurl = $DOF->url_im('guestbook', '/index.php', array('section' => 'msg', 'id' => $params['id']));
                header("Location: $msgurl");
            }
        }
    }

    $arrResult = $DOF->storage('guestbook')->get_message_by_id($params['id']);
    
    // ----------------------Подключение шаблона----------------------------
    //печать шапки страницы
    $DOF->modlib('nvg')->print_header(NVG_MODE_PORTAL);
    
    include_once("view/msg.php");
    
    // очищаем массив параметров
    clean_param_array($params, PARAM_TEXT);
    
    $companel->display();
    // ----------------------Подключение шаблона--------------------------
}
else
{   
    // массив возможных параметов формы
    $params = array('send' => optional_param('send',  null, PARAM_TEXT),
            'login' => optional_param('login',        null, PARAM_TEXT),
            'msgtext' => optional_param('msgtext',    null, PARAM_TEXT),
            'msglist' => optional_param('msglist',    null, PARAM_TEXT),
            'msgtitle' => optional_param('msgtitle',  null, PARAM_TEXT)
    );
    
    $arrResult = array();
    $arrResult = $DOF->storage('guestbook')->get_message_list();
    
    $newmsg = new dof_im_guestbook_newmsg_form($url, $arrResult, 'post', null, array('class'=>'newmsg', 'name' => 'newmsg'));
    
    if ($newmsg->is_cancelled())
    {
        echo $DOF->get_string('form_canceled', 'guestbook');
    }

    // обрабатываем возможность добавления нового сообщения
    if (isset($params['send']))
    {
        if ($newmsg->process())
        {
            $arrParam = array(  "login" => $params["login"],     "msgtext" => $params["msgtext"],
                    "msglist" => $params['msglist'], "msgtitle" => $params['msgtitle']);

            $addmessage = $DOF->storage('guestbook')->add_message_to_list($arrParam);
            
            // увеличиваем счетчик сообщений
           $DOF->storage('guestbook')->catch_event('storage', 'guestbook', 'insertmessage', 0, null);
            
            // очищаем массив параметров
            clean_param_array($params, PARAM_TEXT);
            
            header("Location: $url");
        }
    }
    
    // ----------------------Подключение шаблона----------------------------
    //печать шапки страницы
    $DOF->modlib('nvg')->print_header(NVG_MODE_PORTAL);
    
    // вывод формы
    $newmsg->display();
    include_once("view/msglist.php");
}

//печать подвала
$DOF->modlib('nvg')->print_footer(NVG_MODE_PORTAL);